'use strict'

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = (app) => {
  const { router, controller, middleware } = app
  const { jwtAuth } = middleware.auth

  const { backend } = controller
  const { system } = backend
  const { config } = app

  const prefix = `/backend`

  // router.get(`${prefix}/area`, backend.area.areaList) // 省市区

  const userAuth = jwtAuth({
    jwtName: 'admin',
    loginUrl: `/admin/login`,
    secret: config.jwt.secret + 'admin',
    allowSession: true,
  })

  /**
   * 中间件
   */
  router.use(`${prefix}`, middleware.api) // API 通用中间件

  /**
   * 系统(无需登录)
   */
  router.post(`${prefix}/login`, system.admin.login) // 登录
  router.get(`${prefix}/system/setting`, system.admin.systemSetting) // 后台配置
  router.post(`${prefix}/upload`, middleware.upload, system.upload.upload) // 上传

  /**
   * 系统(需要登录)
   */
  router.use(`${prefix}`, middleware.api, userAuth) // 权限校验
  router.post(`${prefix}/system/upload`, middleware.upload, system.upload.upload) // 上传
  router.get(`${prefix}/system/home`, system.admin.home) // 系统首页
  router.post(`${prefix}/system/user/modify-password`, system.user.modifyPassword) // 系统用户密码修改
  router.get(`${prefix}/system/user/info`, system.user.userInfo) // 系统用户信息
  // router.post(`/system/bind/wechat`, sysUser.setBindWeChat); // 绑定微信
  // router.get(`/system/bind/wechat`, sysUser.getBindWeChat); // 绑定微信
  router.get(`${prefix}/system/dict`, system.admin.dictList) // 系统字典列表
  router.get(`${prefix}/system/dict/:id`, system.admin.dictDetail) // 系统字典列表
  router.get(`${prefix}/system/menu/tree`, system.menu.tree) // 系统菜单-菜单树
  router.resources(`systemMenu`, `${prefix}/system/menu`, system.menu) // 系统菜单
  router.resources(`systemUser`, `${prefix}/system/user`, system.user) // 系统用户
  router.resources(`systemRole`, `${prefix}/system/role`, system.role) // 系统角色
  router.resources(`systemDepartment`, `${prefix}/system/department`, system.department) // 组织架构

  /**
   * 系统-配置
   */
  router.get(`${prefix}/system/config/:configType`, system.config.getConfig) // 系统配置-获取指定配置
  router.post(`${prefix}/system/config/:configType`, system.config.setConfig) // 系统配置-设置指定配置
  router.resources(`systemConfig`, `${prefix}/system/config`, system.config) // 系统配置

  router.resources(`area`, `${prefix}/area`, backend.area)

  router.get(`${prefix}/module/tree`, backend.module.tree)
  router.resources(`module`, `${prefix}/module`, backend.module)

  router.get(`${prefix}/model/tree`, backend.model.tree)
  router.resources(`model`, `${prefix}/model`, backend.model)
}
